package org.Iteracion1.presentacion;
import java.awt.EventQueue;
import java.awt.HeadlessException;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import java.awt.BorderLayout;

import javax.swing.JPanel;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.SQLException;
import java.util.List;

import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import javax.swing.JList;
import javax.swing.ListSelectionModel;

import org.Iteracion1.dominio.Viaje;

public class Viajes {

	static JFrame VentanaViaje;
	private JPanel panel;
	private JButton button;
	private JButton btnAadirNuevo;
	private JButton btnModificar;
	private JButton btnEliminar;
	static JList listaViajes;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Viajes window = new Viajes();
					window.VentanaViaje.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 * @throws Exception 
	 */
	public Viajes() throws Exception {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 * @throws Exception 
	 */
	private void initialize() throws Exception {
		VentanaViaje = new JFrame();
		VentanaViaje.setTitle("Gestionar viaje");
		VentanaViaje.setVisible(true);
		VentanaViaje.setBounds(100, 100, 523, 341);
		VentanaViaje.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		{
			panel = new JPanel();
			VentanaViaje.getContentPane().add(panel, BorderLayout.CENTER);
			panel.setLayout(null);
			{
				button = new JButton("Atr\u00E1s");
				button.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						Menu.VentanaMenu.setVisible(true);
						VentanaViaje.setVisible(false);
					}
				});
				button.setBounds(409, 234, 84, 25);
				panel.add(button);
			}
			{
				btnAadirNuevo = new JButton("A\u00F1adir nuevo");
				btnAadirNuevo.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						Nuevo_Viaje nv = null;
						try {
							nv = new Nuevo_Viaje();
							actualizarLista();
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						nv.VentanaNuevoViaje.setVisible(true);
						VentanaViaje.setVisible(false);
					}
				});
				btnAadirNuevo.setBounds(337, 21, 128, 25);
				panel.add(btnAadirNuevo);
			}
			{
				btnModificar = new JButton("Modificar");
				btnModificar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						if(listaViajes.getSelectedValue()!=null){
							Nuevo_Viaje nv = null;
							try {
								nv = new Nuevo_Viaje();
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							nv.VentanaNuevoViaje.setVisible(true);
							VentanaViaje.setVisible(false);
							nv.VentanaNuevoViaje.setTitle("Modificar viaje");
							nv.btnAnadir.setText("Modificar");
							try {
								nv.actualizarCampos(Integer.parseInt(listaViajes.getSelectedValue().toString()));
							} catch (NumberFormatException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}else{
							JOptionPane.showMessageDialog(VentanaViaje,"Por favor,para modificar un viaje, primero seleccionelo.","Aviso",JOptionPane.ERROR_MESSAGE);
						}
						
					
					}
				});
				btnModificar.setBounds(337, 83, 128, 25);
				panel.add(btnModificar);
			}
			{
				btnEliminar = new JButton("Eliminar");
				btnEliminar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						if(listaViajes.getSelectedValue()!=null){
							try {
								Viaje v =new Viaje(Integer.parseInt(listaViajes.getSelectedValue().toString()), null, null, null, null, null, null);
								if(v.eliminar()==1){
									JOptionPane.showMessageDialog(VentanaViaje, "Se ha eliminado el viaje seleccionado correctamente.","Viaje eliminado",JOptionPane.INFORMATION_MESSAGE);
									actualizarLista();
								}else{
									JOptionPane.showMessageDialog(VentanaViaje, "Error al eliminar viaje, int�ntelo de nuevo.","Aviso",JOptionPane.ERROR_MESSAGE);
								}
							} catch (HeadlessException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (SQLException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}else{
							JOptionPane.showMessageDialog(VentanaViaje,"Por favor,para eliminar un viaje, primero seleccionelo.","Aviso",JOptionPane.ERROR_MESSAGE);
							}
					}
				});
				btnEliminar.setBounds(337, 121, 128, 25);
				panel.add(btnEliminar);
			}
			{
				listaViajes = new JList();
				listaViajes.setBorder(new TitledBorder(null, "Lista de Viajes", TitledBorder.LEADING, TitledBorder.TOP, null, null));
				listaViajes.setName("Lista de Viajes");
				listaViajes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
				listaViajes.setBounds(15, 21, 287, 238);
				panel.add(listaViajes);
				actualizarLista();

			}
		}
		
	}
	public static void actualizarLista() throws Exception{
		DefaultListModel modelo = new DefaultListModel();
		Viaje v = new Viaje(0,null,null,null,null,null,null);
		List<Viaje> lisVi=v.leerTodos();
		for(int i = 1; i<lisVi.size(); i++){
		        modelo.addElement(lisVi.get(i).getId());
		}
		listaViajes.setModel(modelo);
	}
}

